﻿using System;
using System.Threading;

// 定义闹钟类
class AlarmClock
{
    public event EventHandler Tick; // 嘀嗒事件
    public event EventHandler Alarm; // 响铃事件

    public void Run()
    {
        Console.WriteLine("闹钟开始运行...");

        // 模拟嘀嗒运行，每秒触发一次Tick事件
        for (int i = 0; i < 5; i++)
        {
            Thread.Sleep(1000); // 暂停1秒
            OnTick(EventArgs.Empty); // 触发Tick事件
        }

        // 模拟响铃，触发Alarm事件
        OnAlarm(EventArgs.Empty);

        Console.WriteLine("闹钟停止运行...");
    }

    protected virtual void OnTick(EventArgs e)
    {
        Tick?.Invoke(this, e); // 如果Tick事件有订阅者，触发事件
    }

    protected virtual void OnAlarm(EventArgs e)
    {
        Alarm?.Invoke(this, e); // 如果Alarm事件有订阅者，触发事件
    }
}

class Program
{
    static void Main()
    {
        AlarmClock alarmClock = new AlarmClock();

        // 订阅嘀嗒事件
        alarmClock.Tick += (sender, e) =>
        {
            Console.WriteLine("嘀嗒...");
        };

        // 订阅响铃事件
        alarmClock.Alarm += (sender, e) =>
        {
            Console.WriteLine("闹钟响铃！！！");
        };

        alarmClock.Run(); // 运行闹钟

        Console.ReadLine();
    }
}